package com.fhj.utils;


import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.util.EntityUtils;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Context;
import android.util.Log;
import android.widget.Toast;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.fhj.movie.interfaces.CallbackInterface;

public class HttpConnectionUtils {
	//公共的请求调用的方法
	private static void queueRequest(final Context context,
			final CallbackInterface callback, String url) {
		Queue.getInterface(context).add(new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {


			@Override
			public void onResponse(JSONObject arg0) {
				// TODO 自动生成的方法存根
				callback.JsonCallback(arg0);
			}
		} , new Response.ErrorListener() {

			@Override
			public void onErrorResponse(VolleyError arg0) {
				// TODO 自动生成的方法存根
				if (context!=null) {
					Toast.makeText(context, "网速不给力哦!", Toast.LENGTH_SHORT).show();
				}
			}
		}));
	}
	
	
	/**
	 * 获取某一城市所有影院信息
	 * @param context  上下文
	 * @param queue    请求队列
	 * @param city		  城市序号     
	 * @param callback	  数据回调方法
	 * 
	 * @result  请求成功返回数据，请求失败数据Toast 弹窗提示请求失败
	 */
	public static void getCinameData(Context context,int city,CallbackInterface callback){
		
		 String  WEBSITE = "http://piao.163.com/m/cinema/list.html?";
		  String url =WEBSITE + 
				  "dest_city=440300&longitude=&latitude=&city="+city
				  +"&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)
				  +"&channel=netease&ver="+DeviceInfo.getVer(context);
		  queueRequest(context, callback, url);
	}
	
	/**
	 * 获取某一电影院详细信息
	 * @param context	     上下文
	 * @param cinameId	电影院Id
	 * @param cityId		城市Id
	 * @param callback	回调接口
	 */
	public static void getCinameDetailData(final  Context  context,int cinameId,int cityId,final CallbackInterface callback ){
		
		String url = "http://piao.163.com/m/cinema/schedule.html?movie_id=&cinema_id="+cinameId+"&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)+"&channel=netease&ver="+DeviceInfo.getVer(context)+"&city="+cityId;
		
		Log.d("", "======"+url);
		queueRequest(context, callback, url);
	}
	
	/**
	 * 获取电影信息
	 * @param context  上下文
	 * @param queue    请求队列
	 * @param type      请求类型
	 * @param city		 城市id
	 * @param callback	 数据回调接口
	 * 
	 * @result  请求成功返回数据，请求失败数据Toast 弹窗提示请求失败
	 */
	public static void getFilmData(Context context,int type,int city,CallbackInterface callback){

		String WEBSITE = "http://piao.163.com/m/movie/list.html?";

		String url = WEBSITE + "type=" + type + "&city=" + city
				+ "&apiVer=19&mobileType=android&deviceId="
				+ DeviceInfo.getDevicesId(context) + "&channel=netease&ver="
				+ DeviceInfo.getVer(context);

		queueRequest(context, callback, url);
	}
	/**
	 * 获取电影细节信息
	 * @param context  上下文
	 * @param movieId  电影Id
	 * @param cityId		所在城市Id
	 * @param callback	数据回调接口
	 */
	public static void getFilmDetailData(Context context,int movieId, int cityId,CallbackInterface callback){
		String  WEBSITE = "http://piao.163.com/m/movie/detail.html?";
		
		String url =WEBSITE+"account_id=&movie_id="+movieId
				+"&city="+cityId
				+"&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)
				+"&channel=netease&ver="+DeviceInfo.getVer(context);
		
		queueRequest(context, callback, url);
		Log.i("----------","-------->"+url);
	}
	
	
	/**
	 * 获取广告json信息
	 * @param context  上下文
	 * @param callback   获取返回的数据
	 */
	public static void getADData(Context context,final CallbackInterface callback){
		final String  url = "http://piao.163.com/m/movie/index_pic.html?mobileType=android&city=&apiVer=19&deviceId="+DeviceInfo.getDevicesId(context)
				+"&channel=netease&ver="+DeviceInfo.getVer(context);
		new Thread(new Runnable() {
			
			@Override
			public void run() {
				HttpClient  client = new DefaultHttpClient();
				HttpParams params = client.getParams();
				HttpConnectionParams.setConnectionTimeout(params, 60000);
				HttpConnectionParams.setSoTimeout(params, 60000);
				
				HttpGet httpGet = new HttpGet(url);
				HttpResponse response = null;
				try {
					response = client.execute(httpGet);
					if (response.getStatusLine().getStatusCode()==200) {
						HttpEntity entity  = response.getEntity();
						callback.JsonCallback(new JSONObject(EntityUtils.toString(entity)));
					}
				} catch (ClientProtocolException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				} catch (IOException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				} catch (ParseException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				} catch (JSONException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}finally{
					if (client != null) {
						client.getConnectionManager().shutdown();
					}
				}
			}
		}).start();
	}
	/**
	 * 活动首界面json数据请求
	 * @param context  上下文
	 * @param cityId	  城市Id
	 * @param callback	回调接口
	 * 
	 * @return  活动界面相关的json数据
	 */
	public static void getActivityData(Context context,int cityId,CallbackInterface callback){
		String url = "http://piao.163.com/m/promotion/tab.html?data=fPwcnIS5OgcO9mBbudhgglOP6LqTR2XUAp1aihzgjLAZzL3qqEQKWw%3D%3D&stamp=1411721068094&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)+"&channel=netease&ver="+DeviceInfo.getVer(context)+"&city="+cityId;
		queueRequest(context, callback, url);
	}
	/**
	 * 特价活动和观影指南请求接口
	 * @param context  上下文
	 * @param type		 活动类型   2为特价活动，3为观影指南
	 * @param cityId	 城市Id
	 * @param callback	回调接口
	 */
	public static void getActivityOptionData(Context context,int type,int cityId,CallbackInterface callback){
		String url = "http://piao.163.com/m/promotion/list.html?type="+type
				+"&city="+cityId
				+"&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)
				+"&channel=netease&ver="+DeviceInfo.getVer(context);
		queueRequest(context, callback, url);
	}
	/**
	 * 电影播放时间表数据获取
	 * @param context   	上下文
	 * @param movieId		电影Id	
	 * @param cinemaId	电影院Id
	 * @param cityId		城市Id
	 * @param callback		数据回调接口
	 */
	public static void getFilmSchedule(Context  context,int movieId,int cinemaId,int cityId,CallbackInterface callback){
		String url = "http://piao.163.com/m/cinema/ticket.html?movie_id="+movieId
				+"&cinema_id="+cinemaId
				+"&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)
				+"&channel=netease&ver="+DeviceInfo.getVer(context)
				+"&city="+cityId;
		queueRequest(context, callback, url);
	}
	
	/**
	 *获取城市详细地域json数据 
	 * @param context   上下文
	 * @param cityId	 城市id
	 * @param callback	数据回调接口
	 */
	public  static void  getCityDetailsData(Context context,int cityId,CallbackInterface callback){
		
		String url = "http://piao.163.com/m/base_data.html?updateTime=&apiVer=19&mobileType=android&deviceId="+DeviceInfo.getDevicesId(context)
				+"&channel=netease&ver="+DeviceInfo.getVer(context)
				+"&city="+cityId;
		queueRequest(context, callback, url);
	}
	
	
}
